home *** CD-ROM | disk | FTP | other *** search
- *** ../vixie/named/ns_maint.c Thu Dec 1 04:38:07 1994
- --- ns_maint.c Thu Dec 1 17:41:57 1994
- ***************
- *** 90,95 ****
- --- 90,99 ----
-
- #define qserial_qfull() (qserials_running == MAXQSERIAL)
-
- + #if defined(SETTRANSFER) && !defined(ROUND_ROBIN)
- + extern char * getXfer();
- + #endif /* SETTRANSFER && !ROUND_ROBIN */
- +
- #ifdef CLEANCACHE
- static time_t cache_time;
- #endif
- ***************
- *** 268,276 ****
- --- 272,309 ----
- struct zoneinfo *zp;
- {
- struct qinfo *qp;
- + #if defined(SETTRANSFER) && !defined(ROUND_ROBIN)
- + int mcntr; /* looping variable */
- + #endif /* SETTRANSFER && !ROUND_ROBIN */
-
- dprintf(1, (ddt, "qserial_query(%s)\n", zp->z_origin));
-
- + #if defined(SETTRANSFER) && !defined(ROUND_ROBIN)
- + /* if zp->z_xaddr or zp->z_addr has our own address in it,
- + * then we may be dealing with a ``dynamic'' zone - i.e.
- + * calculating this information via an external program
- + * (e.g. for load balancing benefits). The serial number
- + * won't change until _after_ we call the zone transfer
- + * program.
- + */
- + dprintf(1, (ddt, "qserial: checking myself\n"));
- +
- + if (zp->z_xaddr.s_addr == netloop.my_addr.s_addr) {
- + dprintf(1, (ddt, "qserial_query(%s) found me.\n",zp->z_origin));
- + addxfer(zp);
- + return;
- + }
- + for (mcntr=0; mcntr < NSMAX; mcntr++) {
- + dprintf(1, (ddt, "qserial_query - checking [%s]\n",
- + inet_ntoa(zp->z_addr[mcntr])));
- + if (zp->z_addr[mcntr].s_addr == netloop.addr) {
- + dprintf(1, (ddt, "qserial_query(%s) found me.\n",zp->z_origin));
- + addxfer(zp);
- + return;
- + }
- + }
- + #endif /* SETTRANSFER && !ROUND_ROBIN */
- +
- if (qserial_qfull())
- return;
-
- ***************
- *** 402,408 ****
- a = zp->z_addr[cnt];
- if (aIsUs(a)
- && !haveComplained(zp->z_origin,
- ! (char*)startxfer)) {
- syslog(LOG_ERR,
- "attempted to fetch zone %s from self (%s)",
- zp->z_origin, inet_ntoa(a));
- --- 435,445 ----
- a = zp->z_addr[cnt];
- if (aIsUs(a)
- && !haveComplained(zp->z_origin,
- ! (char*)startxfer)
- ! #if defined(SETTRANSFER) && !defined(ROUND_ROBIN)
- ! && (!getXfer(zp->z_origin))
- ! #endif /* SETTRANSFER && !ROUND_ROBIN */
- ! ) {
- syslog(LOG_ERR,
- "attempted to fetch zone %s from self (%s)",
- zp->z_origin, inet_ntoa(a));
- ***************
- *** 442,448 ****
- --- 479,494 ----
-
- if (pid == 0) {
- /* child */
- + #if defined(SETTRANSFER) && !defined(ROUND_ROBIN)
- + char * pathXfer;
- + pathXfer = getXfer(zp->z_origin);
- + if (pathXfer != (char *)NULL)
- + execv(pathXfer, argv);
- + else
- + execv(_PATH_XFER, argv);
- + #else /* SETTRANSFER && !ROUND_ROBIN */
- execv(_PATH_XFER, argv);
- + #endif /* SETTRANSFER && !ROUND_ROBIN */
- syslog(LOG_ERR, "can't exec %s: %m", _PATH_XFER);
- _exit(XFER_FAIL); /* avoid duplicate buffer flushes */
- }
-